// import DataBus from '../libs/data.js'; // 导入参数
export default {
	// 触摸事件处理
	handleTouch(e) {
		const touch = e.touches[0];
		const x = touch.clientX;
		const y = touch.clientY;

		if (GameGlobal.databus.gameState === 'home') {
			this.checkClick(x, y);
		} else if (GameGlobal.databus.gameState === 'game1') {
			this.game1Click(x, y);
		}
	},

	// 首页点击
	checkClick(x, y) {
		let canvas = GameGlobal.databus.canvas
		let btn1Bg = GameGlobal.databus.image.btn1Bg
		let ctx = GameGlobal.databus.ctx
		const kaishibtn = {
			x: canvas.width / 2 - btn1Bg.box.x,
			y: canvas.height / 2 - btn1Bg.box.y,
			w: btn1Bg.box.w,
			h: btn1Bg.box.h
		}
		// 点击开始游戏
		if (this.isInRect(x, y, kaishibtn)) {
			if (GameGlobal.databus.gamethis) {
				GameGlobal.databus.gameState = 'game1'
				GameGlobal.databus.gamethis.render()
			} else {
				const loadTask = tt.loadSubpackage({
					name: 'stage1', // 填写 game.json 中 subPackages 填写的分包名称 name
					success: function (res) {
						// console.log("加载通过", ctx)
						GameGlobal.databus.gameState = 'game1'
					},
					fail: function (res) {
						console.log("加载失败", ctx)
					}
				});
				loadTask.onProgressUpdate(res => {
					// console.log('下载进度', res.progress);
					// console.log('已经下载的数据长度', res.totalBytesWritten);
					// console.log('预期需要下载的数据总长度', res.totalBytesExpectedToWrite);
				});
			}
		}
	},


	// 找不同游戏页面点击
	game1Click(x, y) {
		let gameSpots = GameGlobal.databus.gameSpots
		// let canvas = GameGlobal.databus.canvas
		// let btn1Bg = GameGlobal.databus.image.btn1Bg
		// let ctx = GameGlobal.databus.ctx
		console.log(gameSpots)

		let isValidClick = false; // 标记是否找到有效点击

		for (let i = 0; i < gameSpots.length; i++) {
			const spot = gameSpots[i];
			const dx = x - spot.x;
			const dy = y - spot.y;
			const distance = Math.sqrt(dx * dx + dy * dy);

			if (distance <= spot.r && !spot.isClicked) { // 新增判断是否已点击
				console.log("点到了")
				// GameGlobal.musicManager.playSuccessMusic();
				// GameGlobal.databus.numberGame.clickedCount++;
				// spot.isClicked = true; // 标记为已点击
				// gameSpots[i].r += 10;
				// // this.render(this.ctx);
				// isValidClick = true;

				// if (GameGlobal.databus.numberGame.clickedCount === GameGlobal.databus.numberGame.totalSpots) {
				// 	// this.showSuccess();
				// }
				// return; // 点击有效后立即返回
			} else { }
		}

		// 循环结束未找到有效点击
		// if (!isValidClick) {
		// 	GameGlobal.databus.numberGame.totalError++;
		// 	// GameGlobal.musicManager.failCikMusic();
		// 	console.log("点击失败", GameGlobal.databus.numberGame.totalError); // 新增失败提示
		// 	if (GameGlobal.databus.numberGame.totalError > 5) {
		// 		console.log("点击失败22222"); // 新增失败提示
		// 		this.showError(this.ctx);
		// 	}
		// 	return;
		// }
		// const kaishibtn = {
		// 	x: canvas.width / 2 - btn1Bg.box.x,
		// 	y: canvas.height / 2 - btn1Bg.box.y,
		// 	w: btn1Bg.box.w,
		// 	h: btn1Bg.box.h
		// }
		// // 点击开始游戏
		// if (this.isInRect(x, y, kaishibtn)) {
		// 	GameGlobal.databus.gameState = 'home'
		// 	GameGlobal.databus.homethis.render()
		// }
		// return
	},

	// 随机圆点
	generateSpots() {
		gameSpots = [];
		const SPOT_RADIUS = 30; // 圆点半径
		const MIN_DISTANCE = 60; // 最小间距（两倍半径）

		// 根据需求定义生成区域（含安全边距）
		const generateArea = {
			x: 30, // X起始位置 = 0 + 半径
			y: 100 + SPOT_RADIUS, // Y起始位置 = 100 + 半径
			width: this.canvas.width - 60, // 宽度 = 全屏 - 两侧半径
			height: (this.canvas.height - 100) - SPOT_RADIUS * 2 // 高度 = 区域高度 - 底部半径
		};

		for (let i = 0; i < 5; i++) {
			let isValid = false;
			let newSpot;
			// 循环生成直到找到符合条件的点
			while (!isValid) {
				// 在限定区域内随机生成坐标（含安全边距）
				newSpot = {
					x: Math.random() * generateArea.width + generateArea.x,
					y: Math.random() * generateArea.height + generateArea.y,
					r: SPOT_RADIUS,
					isClicked: false // 新增属性
				};

				// 检查边界条件（二次验证）
				isValid = (
					newSpot.x >= generateArea.x &&
					newSpot.x <= generateArea.x + generateArea.width &&
					newSpot.y >= generateArea.y &&
					newSpot.y <= generateArea.y + generateArea.height
				) &&

					// 检查与所有现有点的距离
					gameSpots.every(existing => {
						const dx = newSpot.x - existing.x;
						const dy = newSpot.y - existing.y;
						return Math.sqrt(dx * dx + dy * dy) >= MIN_DISTANCE;
					});
			}

			gameSpots.push(newSpot);
		}
	},

	// 辅助函数
	isInRect(x, y, rect) {
		return x >= rect.x && x <= rect.x + rect.w &&
			y >= rect.y && y <= rect.y + rect.h;
	},

	isInCircle(x, y, circle) {
		const dx = x - circle.x;
		const dy = y - circle.y;
		return dx * dx + dy * dy <= circle.r * circle.r;
	}
}